<!DOCTYPE html>
<!-- saved from url=(0049)https://www.cnblogs.com/senlinyang/p/8204752.html -->
<html lang="zh-cn"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="referrer" content="origin">
    <meta property="og:description" content="Java序列化就是将一个对象转化为一个二进制表示的字节数组，通过保存或则转移这些二进制数组达到持久化的目的。要实现序列化，需要实现java.io.Serializable接口。反序列化是和序列化相反的">
    <meta http-equiv="Cache-Control" content="no-transform">
    <meta http-equiv="Cache-Control" content="no-siteapp">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Java序列化机制原理 - 木易森林 - 博客园</title>
    
    <link rel="stylesheet" href="./Java序列化编码机制原理 - 木易森林 - 博客园_files/blog-common.min.css">
    <link id="MainCss" rel="stylesheet" href="./Java序列化编码机制原理 - 木易森林 - 博客园_files/bundle-codinglife.min.css">
    
    <link id="mobile-style" media="only screen and (max-width: 767px)" type="text/css" rel="stylesheet" href="./Java序列化编码机制原理 - 木易森林 - 博客园_files/bundle-codinglife-mobile.min.css">
    
    <link type="application/rss+xml" rel="alternate" href="https://www.cnblogs.com/senlinyang/rss">
    <link type="application/rsd+xml" rel="EditURI" href="https://www.cnblogs.com/senlinyang/rsd.xml">
    <link type="application/wlwmanifest+xml" rel="wlwmanifest" href="https://www.cnblogs.com/senlinyang/wlwmanifest.xml">
    <script src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/amp4ads-host-v0.js.下载"></script><script async="" src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/analytics.js.下载"></script><script src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/jquery-2.2.0.min.js.下载"></script>
    <script src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/blog-common.min.js.下载"></script>
    <script>
        var currentBlogId = 392323;
        var currentBlogApp = 'senlinyang';
        var cb_enable_mathjax = false;
        var isLogined = false;
        var skinName = 'CodingLife';
    </script>
    
    
    
<link rel="preload" href="./Java序列化编码机制原理 - 木易森林 - 博客园_files/f.txt" as="script"><script type="text/javascript" src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/f.txt"></script><script src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/pubads_impl_2020051103.js.下载" async=""></script><link rel="prefetch" href="https://a2a0ae26af42b5f5e91376b5880f824a.safeframe.googlesyndication.com/safeframe/1-0-37/html/container.html"><link rel="prefetch" href="https://tpc.googlesyndication.com/safeframe/1-0-37/html/container.html"></head>
<body>
    <a name="top"></a>
    
    
<!--done-->
<div id="home">
<div id="header">
	<div id="blogTitle">
        <a id="lnkBlogLogo" href="https://www.cnblogs.com/senlinyang/"><img id="blogLogo" src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/logo.gif" alt="返回主页"></a>		
		
<!--done-->
<h1><a id="Header1_HeaderTitle" class="headermaintitle HeaderMainTitle" href="https://www.cnblogs.com/senlinyang/">木易森林</a>
</h1>
<h2>
一念执着，一生坚守
</h2>




		
	</div><!--end: blogTitle 博客的标题和副标题 -->
	<div id="navigator">
		
<ul id="navList">
<li><a id="blog_nav_sitehome" class="menu" href="https://www.cnblogs.com/">
博客园</a>
</li>
<li>
<a id="blog_nav_myhome" class="menu" href="https://www.cnblogs.com/senlinyang/">
首页</a>
</li>
<li>

<a id="blog_nav_newpost" class="menu" href="https://i.cnblogs.com/EditPosts.aspx?opt=1">
新随笔</a>
</li>
<li>
<a id="blog_nav_contact" class="menu" href="https://msg.cnblogs.com/send/%E6%9C%A8%E6%98%93%E6%A3%AE%E6%9E%97">
联系</a></li>
<li>
<a id="blog_nav_rss" class="menu" href="javascript:void(0)" data-rss="https://www.cnblogs.com/senlinyang/rss/">
订阅</a>
<!--<partial name="./Shared/_XmlLink.cshtml" model="Model" /></li>--></li>
<li>
<a id="blog_nav_admin" class="menu" href="https://i.cnblogs.com/">
管理</a>
</li>
</ul>


		<div class="blogStats">
			
			<span id="stats_post_count">随笔 - 
220&nbsp; </span>
<span id="stats_article_count">文章 - 
1&nbsp; </span>
<span id="stats-comment_count">评论 - 
27</span>

			
		</div><!--end: blogStats -->
	</div><!--end: navigator 博客导航栏 -->
</div><!--end: header 头部 -->

<div id="main">
	<div id="mainContent">
	<div class="forFlow">
		<div id="post_detail">
    <!--done-->
    <div id="topics">
        <div class="post">
            <h1 class="postTitle">
                
<a id="cb_post_title_url" class="postTitle2" href="https://www.cnblogs.com/senlinyang/p/8204752.html">Java序列化机制原理</a>

            </h1>
            <div class="clear"></div>
            <div class="postBody">
                
<div id="cnblogs_post_body" class="blogpost-body cnblogs-markdown">
    <p>Java序列化就是将一个对象转化为一个二进制表示的字节数组，通过保存或则转移这些二进制数组达到持久化的目的。要实现序列化，需要实现java.io.Serializable接口。反序列化是和序列化相反的过程，就是把二进制数组转化为对象的过程。在反序列化的时候，必须有原始类的模板才能将对象还原。从这个过程我们可以猜测到，序列化过程并不想class文件那样保存类的完整的结构信息。下面我们以一个简单的例子来看一下，序列化的时候都保存了哪些信息。代码如下：</p>
<pre><code class="hljs java"><span class="hljs-keyword">package</span> com.ysl;
<span class="hljs-keyword">import</span> java.io.FileOutputStream;
<span class="hljs-keyword">import</span> java.io.IOException;
<span class="hljs-keyword">import</span> java.io.ObjectOutputStream;
<span class="hljs-keyword">import</span> java.io.Serializable;

<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">SerializableTest</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serializable</span></span>{

    <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">long</span> serialVersionUID = -<span class="hljs-number">1L</span>;
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> num = <span class="hljs-number">2018</span>;

    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String[] args)</span></span>{
        <span class="hljs-keyword">try</span> {
            FileOutputStream fos = <span class="hljs-keyword">new</span> FileOutputStream(<span class="hljs-string">"serializable"</span>);
            ObjectOutputStream oos = <span class="hljs-keyword">new</span> ObjectOutputStream(fos);
            SerializableTest test = <span class="hljs-keyword">new</span> SerializableTest();
            oos.writeObject(test);
            oos.flush();
            oos.close();
        } <span class="hljs-keyword">catch</span> (IOException e) {
            e.printStackTrace();
        }
    }
}
</code></pre>
<p>序列化后的二进制字节数据如下：</p>
<pre><code class="hljs go">aced <span class="hljs-number">0005</span> <span class="hljs-number">7372</span> <span class="hljs-number">0018</span> <span class="hljs-number">636f</span> <span class="hljs-number">6d</span>2e <span class="hljs-number">7973</span> <span class="hljs-number">6</span>c2e
<span class="hljs-number">5365</span> <span class="hljs-number">7269</span> <span class="hljs-number">616</span>c <span class="hljs-number">697</span>a <span class="hljs-number">6162</span> <span class="hljs-number">6</span>c65 <span class="hljs-number">5465</span> <span class="hljs-number">7374</span>
ffff ffff ffff ffff <span class="hljs-number">0200</span> <span class="hljs-number">0149</span> <span class="hljs-number">0003</span> <span class="hljs-number">6e75</span>
<span class="hljs-number">6d</span>78 <span class="hljs-number">7000</span> <span class="hljs-number">0007</span> e2
</code></pre>
<p>上述的内容分为一下几个部分：</p>
<h3 id="第一部分是序列化文件头">第一部分是序列化文件头</h3>
<ul>
<li>AC ED ：STREAM_MAGIC声明使用了序列化协议</li>
<li>00 05 ：STREAM_VERSION序列化协议版本</li>
<li>73 ：TC_OBJECT声明这是一个新的对象</li>
</ul>
<h3 id="第二部分是序列化的类的描述，在这里是serializabletest">第二部分是序列化的类的描述，在这里是SerializableTest</h3>
<ul>
<li>72 ：TC_CLASSDESC声明这里开始一个新的class</li>
<li>00 18：class名字的长度是24个字节</li>
<li>636f 6d2e 7973 6c2e 5365 7269 616c 697a 6162 6c65 5465 7374：SerializableTest的完整类名</li>
<li>ffff ffff ffff ffff：serialVersionUID，序列化ID，如果没有指定，则会由算法随机生成一个8字节的ID</li>
<li>02 ：标记号，声明该类支持序列化</li>
<li>00 01：该类所包含的域的个数为1</li>
</ul>
<h3 id="第三部分是对象中各个属性的描述">第三部分是对象中各个属性的描述</h3>
<ul>
<li>49：域类型，49代表I，也就是int类型</li>
<li>00 03：域名字的长度为3</li>
<li>6e 75 6d：num属性的名称</li>
</ul>
<h3 id="第四部分为对象的父类信息描述">第四部分为对象的父类信息描述</h3>
<p>SerializableTest没有父类，如果有，和第二部分的描述相同</p>
<ul>
<li>78 ：TC_ENDBLOCKDATA，对象块的结束标志</li>
<li>70：TC_NUL：说明没有其他超类的标志</li>
</ul>
<h3 id="第五部分为对象属性的实际值">第五部分为对象属性的实际值</h3>
<p>如果属性是一个对象，那么这里还将序列化这个对象，规则和第二部分一样</p>
<ul>
<li>00 0007 e2：数值2018</li>
</ul>
<p>虽然Java的序列化能够保证对象状态的持久保存，但是遇到一些对象结构复杂的情况还是比较难处理的，下面是对一些复杂情况的总结：</p>
<ul>
<li>当父类实现了Serializable接口的时候，所有的子类都能序列化</li>
<li>子类实现了Serializable接口，父类没有，父类中的属性不能被序列化(不报错，但是数据会丢失)</li>
<li>如果序列化的属性是对象，对象必须也能序列化，否则会报错</li>
<li>反序列化的时候，如果对象的属性有修改或则删减，修改的部分属性会丢失，但是不会报错</li>
<li>在反序列化的时候serialVersionUID被修改的话，会反序列化失败</li>
<li>在存Java环境下使用Java的序列化机制会支持的很好，但是在多语言环境下需要考虑别的序列化机制，比如xml,json,或则protobuf</li>
</ul>

</div>
<div id="MySignature" style="display: block;">每天进步一点点</div>
<div class="clear"></div>
<div id="blog_post_info_block"><div id="BlogPostCategory">
    分类: 
            <a href="https://www.cnblogs.com/senlinyang/category/1133427.html" target="_blank">java</a></div>


    <div id="blog_post_info">
<div id="green_channel">
        <a href="javascript:void(0);" id="green_channel_digg" onclick="DiggIt(8204752,cb_blogId,1);green_channel_success(this,&#39;谢谢推荐！&#39;);">好文要顶</a>
        <a id="green_channel_follow" onclick="follow(&#39;1025e69a-70bd-46e8-5974-08d4ef52ecb6&#39;);" href="javascript:void(0);">关注我</a>
    <a id="green_channel_favorite" onclick="AddToWz(cb_entryId);return false;" href="javascript:void(0);">收藏该文</a>
    <a id="green_channel_weibo" href="javascript:void(0);" title="分享至新浪微博" onclick="ShareToTsina()"><img src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/icon_weibo_24.png" alt=""></a>
    <a id="green_channel_wechat" href="javascript:void(0);" title="分享至微信" onclick="shareOnWechat()"><img src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/wechat.png" alt=""></a>
</div>
<div id="author_profile">
    <div id="author_profile_info" class="author_profile_info">
            <a href="https://home.cnblogs.com/u/senlinyang/" target="_blank"><img src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/20171118093141.png" class="author_avatar" alt=""></a>
        <div id="author_profile_detail" class="author_profile_info">
            <a href="https://home.cnblogs.com/u/senlinyang/">木易森林</a><br>
            <a href="https://home.cnblogs.com/u/senlinyang/followees/">关注 - 2</a><br>
            <a href="https://home.cnblogs.com/u/senlinyang/followers/">粉丝 - 55</a>
        </div>
    </div>
    <div class="clear"></div>
    <div id="author_profile_honor"></div>
    <div id="author_profile_follow">
                <a href="javascript:void(0);" onclick="follow(&#39;1025e69a-70bd-46e8-5974-08d4ef52ecb6&#39;);return false;">+加关注</a>
    </div>
</div>
<div id="div_digg">
    <div class="diggit" onclick="votePost(8204752,&#39;Digg&#39;)">
        <span class="diggnum" id="digg_count">2</span>
    </div>
    <div class="buryit" onclick="votePost(8204752,&#39;Bury&#39;)">
        <span class="burynum" id="bury_count">0</span>
    </div>
    <div class="clear"></div>
    <div class="diggword" id="digg_tips">
    </div>
</div>

<script type="text/javascript">
    currentDiggType = 0;
</script></div>
    <div class="clear"></div>
    <div id="post_next_prev">

    <a href="https://www.cnblogs.com/senlinyang/p/8203548.html" class="p_n_p_prefix">« </a> 上一篇：    <a href="https://www.cnblogs.com/senlinyang/p/8203548.html" title="发布于 2018-01-05 11:53">docker的基本概念</a>
    <br>
    <a href="https://www.cnblogs.com/senlinyang/p/8241745.html" class="p_n_p_prefix">» </a> 下一篇：    <a href="https://www.cnblogs.com/senlinyang/p/8241745.html" title="发布于 2018-01-08 11:16">docker镜像基本操作一</a>

</div>
</div>
            </div>
            <div class="postDesc">posted @ 
<span id="post-date">2018-01-05 15:20</span>&nbsp;
<a href="https://www.cnblogs.com/senlinyang/">木易森林</a>&nbsp;
阅读(<span id="post_view_count">8488</span>)&nbsp;
评论(<span id="post_comment_count">0</span>)&nbsp;
<a href="https://i.cnblogs.com/EditPosts.aspx?postid=8204752" rel="nofollow">编辑</a>&nbsp;
<a href="javascript:void(0)" onclick="AddToWz(8204752);return false;">收藏</a></div>
        </div>
	    
	    
    </div><!--end: topics 文章、评论容器-->
</div>
<script src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/highlight.min.js.下载"></script>
<script>markdown_highlight();</script>
<script>
    var allowComments = true, cb_blogId = 392323, cb_blogApp = 'senlinyang', cb_blogUserGuid = '1025e69a-70bd-46e8-5974-08d4ef52ecb6';
    var cb_entryId = 8204752, cb_entryCreatedDate = '2018-01-05 15:20', cb_postType = 1; 
    loadViewCount(cb_entryId);
    loadSideColumnAd();
</script><a name="!comments"></a>
<div id="blog-comments-placeholder"></div>
<script>
    var commentManager = new blogCommentManager();
    commentManager.renderComments(0);
</script>

<div id="comment_form" class="commentform">
    <a name="commentform"></a>
    <div id="divCommentShow"></div>
    <div id="comment_nav"><span id="span_refresh_tips"></span><a href="javascript:void(0);" onclick="return RefreshCommentList();" id="lnk_RefreshComments" runat="server" clientidmode="Static">刷新评论</a><a href="https://www.cnblogs.com/senlinyang/p/8204752.html#" onclick="return RefreshPage();">刷新页面</a><a href="https://www.cnblogs.com/senlinyang/p/8204752.html#top">返回顶部</a></div>
    <div id="comment_form_container" style="visibility: visible;"><div class="login_tips">
    注册用户登录后才能发表评论，请 
    <a rel="nofollow" href="javascript:void(0);" class="underline" onclick="return login(&#39;commentform&#39;);">登录</a>
     或 
    <a rel="nofollow" href="javascript:void(0);" class="underline" onclick="return register();">注册</a>，
    <a href="https://www.cnblogs.com/">访问</a> 网站首页。
</div></div>
    <div class="ad_text_commentbox" id="ad_text_under_commentbox"></div>
    <div id="ad_t2"><a href="https://developer.huaweiuniversity.com/portal/courses/HuaweiX+CBGHWDCN030/about?source=bky" target="_blank" onclick="ga(&#39;send&#39;, &#39;event&#39;, &#39;Link&#39;, &#39;click&#39;, &#39;T2-华为开发者学院文字链投放&#39;)">【推荐】AI大咖带您解锁深度学习算法，华为开发者学院直播间福利仅29元！</a><br><a href="http://www.ucancode.com/index.htm" target="_blank" onclick="ga(&#39;send&#39;, &#39;event&#39;, &#39;Link&#39;, &#39;click&#39;, &#39;T2-ucancode&#39;)">【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库</a><br><a href="https://developer.aliyun.com/ask/272857?utm_content=g_1000104135" target="_blank" onclick="ga(&#39;send&#39;, &#39;event&#39;, &#39;Link&#39;, &#39;click&#39;, &#39;T2-阿里云开发者社区&#39;)">【推荐】Java实战200例（附源码）-助你提升实战能力</a><br><a href="https://developer.aliyun.com/group/interview?utm_content=g_1000088932" target="_blank" onclick="ga(&#39;send&#39;, &#39;event&#39;, &#39;Link&#39;, &#39;click&#39;, &#39;T2-阿里云开发者社区&#39;)">【推荐】斩获阿里offer的必看12篇面试合辑</a><br></div>
    <div id="opt_under_post"></div>
    <script async="async" src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/gpt.js.下载"></script>
    <script>
        var googletag = googletag || {};
        googletag.cmd = googletag.cmd || [];
    </script>
    <script>
        googletag.cmd.push(function () {
            googletag.defineSlot("/1090369/C1", [300, 250], "div-gpt-ad-1546353474406-0").addService(googletag.pubads());
            googletag.defineSlot("/1090369/C2", [468, 60], "div-gpt-ad-1539008685004-0").addService(googletag.pubads());
            googletag.pubads().enableSingleRequest();
            googletag.enableServices();
        });
    </script>
    <div id="cnblogs_c1" class="c_ad_block">
        <div id="div-gpt-ad-1546353474406-0" style="height:250px; width:300px;" data-google-query-id="CMzQu7TPs-kCFRBuvQod6fMFmw"><div id="google_ads_iframe_/1090369/C1_0__container__" style="border: 0pt none;"><iframe id="google_ads_iframe_/1090369/C1_0" title="3rd party ad content" name="google_ads_iframe_/1090369/C1_0" width="300" height="250" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" style="border: 0px; vertical-align: bottom;" data-google-container-id="1" data-load-complete="true" src="./Java序列化编码机制原理 - 木易森林 - 博客园_files/saved_resource.html"></iframe></div></div>
    </div>
    <div id="under_post_news"><div class="recomm-block"><b>相关博文：</b><br>·  <a title="Java序列化机制和原理" href="https://www.cnblogs.com/redcreen/archive/2011/02/15/1955307.html" target="_blank" onclick="clickRecomItmem(1955307)">Java序列化机制和原理</a><br>·  <a title="Java对象表示方式1：序列化、反序列化和transient关键字的作用" href="https://www.cnblogs.com/szlbm/p/5504166.html" target="_blank" onclick="clickRecomItmem(5504166)">Java对象表示方式1：序列化、反序列化和transient关键字的作用</a><br>·  <a title="Java对象表示方式1：序列化、反序列化和transient关键字的作用" href="https://www.cnblogs.com/xrq730/p/4821958.html" target="_blank" onclick="clickRecomItmem(4821958)">Java对象表示方式1：序列化、反序列化和transient关键字的作用</a><br>·  <a title="java对象序列化、反序列化" href="https://www.cnblogs.com/zhilu-doc/p/5338462.html" target="_blank" onclick="clickRecomItmem(5338462)">java对象序列化、反序列化</a><br>·  <a title="Java序列化机制和原理及自己的理解" href="https://www.cnblogs.com/qingruihappy/p/8473816.html" target="_blank" onclick="clickRecomItmem(8473816)">Java序列化机制和原理及自己的理解</a><br>»  <a target="_blank" href="https://recomm.cnblogs.com/blogpost/8204752">更多推荐...</a><div id="cnblogs_t5"><a href="https://developer.aliyun.com/article/744670?utm_content=g_1000104140" target="_blank" onclick="ga(&#39;send&#39;, &#39;event&#39;, &#39;Link&#39;, &#39;click&#39;, &#39;T5-阿里云开发者社区&#39;)">如何在面试中成长？来看阿里前端终面官的面试心得</a></div></div></div>
    <div id="cnblogs_c2" class="c_ad_block">
        <div id="div-gpt-ad-1539008685004-0" style="height:60px; width:468px;" data-google-query-id="CPbPurTPs-kCFRBuvQod6fMFmw">
            <script>
                if (new Date() >= new Date(2018, 9, 13)) {
                    googletag.cmd.push(function () { googletag.display("div-gpt-ad-1539008685004-0"); });
                }
            </script>
        <div id="google_ads_iframe_/1090369/C2_0__container__" style="border: 0pt none; width: 468px; height: 60px;"></div></div>
    </div>
    <div id="under_post_kb">
<div class="itnews c_ad_block">
    <b>最新 IT 新闻</b>:
    <br>
 ·              <a href="https://news.cnblogs.com/n/661946/" target="_blank">董明珠京东直播首秀：同框王自如 爆款空调五折</a>
            <br>
 ·              <a href="https://news.cnblogs.com/n/661945/" target="_blank">买早的又成韭菜？特斯拉官宣本月第二次降价 网友神预言</a>
            <br>
 ·              <a href="https://news.cnblogs.com/n/661944/" target="_blank">迅雷会员一个季度猛增60万：收入大涨18.1％</a>
            <br>
 ·              <a href="https://news.cnblogs.com/n/661943/" target="_blank">乐视网股票终止上市：28万股东欲哭无泪 这三点让贾跃亭走到今天</a>
            <br>
 ·              <a href="https://news.cnblogs.com/n/661941/" target="_blank">刘涛今晚直播半价卖房：通宵加班到上班 宵夜变早餐</a>
            <br>
    » <a href="https://news.cnblogs.com/" title="IT 新闻" target="_blank">更多新闻...</a>
</div></div>
    <div id="HistoryToday" class="c_ad_block"></div>
    <script type="text/javascript">
        fixPostBody();
        deliverBigBanner();
setTimeout(function() { incrementViewCount(cb_entryId); }, 50);        deliverAdT2();
        deliverAdC1();
        deliverAdC2();
        loadNewsAndKb();
        loadBlogSignature();
LoadPostCategoriesTags(cb_blogId, cb_entryId);        LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid);
        GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate, cb_postType);
        loadOptUnderPost();
        GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate);
    </script>
</div>
	</div><!--end: forFlow -->
	</div><!--end: mainContent 主体内容容器-->

	<div id="sideBar">
		<div id="sideBarMain">
			
<div id="sidebar_news" class="newsItem"><!--done-->
<h3 class="catListTitle">公告</h3>

<div id="blog-news">
    
    <div id="profile_block">
        昵称：
        <a href="https://home.cnblogs.com/u/senlinyang/">
            木易森林
        </a>
        <br>
        园龄：
        <a href="https://home.cnblogs.com/u/senlinyang/" title="入园时间：2017-11-02">
            2年6个月
        </a>
        <br>
        粉丝：
        <a href="https://home.cnblogs.com/u/senlinyang/followers/">
            55
        </a>
        <br>
        关注：
        <a href="https://home.cnblogs.com/u/senlinyang/followees/">
            2
        </a>
        <div id="p_b_follow">
<a href="javascript:void(0)" onclick="follow(&#39;1025e69a-70bd-46e8-5974-08d4ef52ecb6&#39;)">+加关注</a></div>
        <script>getFollowStatus('1025e69a-70bd-46e8-5974-08d4ef52ecb6');</script>
    </div>
</div>

</div>

<div id="sidebar_ad"></div>
			<div id="blog-calendar" style="">

<table id="blogCalendar" class="Cal" cellspacing="0" cellpadding="0" title="Calendar" border="0">
    <tbody>
        <tr>
            <td colspan="7">
                <table class="CalTitle" cellspacing="0" border="0">
                    <tbody>
                        <tr>
                            <td class="CalNextPrev">
                                <a href="javascript:void(0);" onclick="loadBlogCalendar(&#39;2020/04/14&#39;); return false;">&lt;</a>
                            </td>
                            <td align="center">2020年5月</td>
                            <td align="right" class="CalNextPrev">
                                <a href="javascript:void(0);" onclick="loadBlogCalendar(&#39;2020/06/14&#39;); return false;">&gt;</a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </td>
        </tr>
        <tr>
                    <th class="CalDayHeader" align="center" abbr="日" scope="col">日</th>
                    <th class="CalDayHeader" align="center" abbr="一" scope="col">一</th>
                    <th class="CalDayHeader" align="center" abbr="二" scope="col">二</th>
                    <th class="CalDayHeader" align="center" abbr="三" scope="col">三</th>
                    <th class="CalDayHeader" align="center" abbr="四" scope="col">四</th>
                    <th class="CalDayHeader" align="center" abbr="五" scope="col">五</th>
                    <th class="CalDayHeader" align="center" abbr="六" scope="col">六</th>
        </tr>
            <tr>
                            <td class="CalOtherMonthDay" align="center">26</td>
                            <td class="CalOtherMonthDay" align="center">27</td>
                            <td class="CalOtherMonthDay" align="center">28</td>
                            <td class="CalOtherMonthDay" align="center">29</td>
                            <td class="CalOtherMonthDay" align="center">30</td>
                        <td class="" align="center">
                            1
                        </td>
                    <td class="CalWeekendDay" align="center">
                        2
                    </td>
            </tr>
                <tr>
                        <td class="CalWeekendDay" align="center">
                            3
                        </td>
                            <td class="" align="center">
                                4
                            </td>
                            <td class="" align="center">
                                5
                            </td>
                            <td class="" align="center">
                                6
                            </td>
                            <td class="" align="center">
                                7
                            </td>
                            <td class="" align="center">
                                8
                            </td>
                        <td class="CalWeekendDay" align="center">
                            9
                        </td>
                </tr>
                <tr>
                        <td class="CalWeekendDay" align="center">
                            10
                        </td>
                            <td class="" align="center">
                                11
                            </td>
                            <td class="" align="center">
                                12
                            </td>
                            <td class="" align="center">
                                13
                            </td>
                            <td class="CalTodayDay" align="center">
                                14
                            </td>
                            <td class="" align="center">
                                15
                            </td>
                        <td class="CalWeekendDay" align="center">
                            16
                        </td>
                </tr>
                <tr>
                        <td class="CalWeekendDay" align="center">
                            17
                        </td>
                            <td class="" align="center">
                                18
                            </td>
                            <td class="" align="center">
                                19
                            </td>
                            <td class="" align="center">
                                20
                            </td>
                            <td class="" align="center">
                                21
                            </td>
                            <td class="" align="center">
                                22
                            </td>
                        <td class="CalWeekendDay" align="center">
                            23
                        </td>
                </tr>
                <tr>
                        <td class="CalWeekendDay" align="center">
                            24
                        </td>
                            <td class="" align="center">
                                25
                            </td>
                            <td class="" align="center">
                                26
                            </td>
                            <td class="" align="center">
                                27
                            </td>
                            <td class="" align="center">
                                28
                            </td>
                            <td class="" align="center">
                                29
                            </td>
                        <td class="CalWeekendDay" align="center">
                            30
                        </td>
                </tr>
                <tr>
                        <td class="CalWeekendDay" align="center">
                            31
                        </td>
                            <td class="CalOtherMonthDay" align="center">
                                1
                            </td>
                            <td class="CalOtherMonthDay" align="center">
                                2
                            </td>
                            <td class="CalOtherMonthDay" align="center">
                                3
                            </td>
                            <td class="CalOtherMonthDay" align="center">
                                4
                            </td>
                            <td class="CalOtherMonthDay" align="center">
                                5
                            </td>
                        <td class="CalOtherMonthDay" align="center">
                            6
                        </td>
                </tr>
    </tbody>
</table></div><script>loadBlogDefaultCalendar();</script>
			
			<div id="leftcontentcontainer">
				<div id="blog-sidecolumn">
<!-- 搜索 -->
<div id="sidebar_search" class="sidebar-block">
    
</div>

<!-- 常用链接 -->
<div id="sidebar_shortcut" class="sidebar-block">
    <div class="catListLink">
<h3 class="catListTitle">
常用链接
</h3>
<ul>
		<li>

<a href="https://www.cnblogs.com/senlinyang/p/" title="我的博客的随笔列表">我的随笔</a>
</li>
		<li>

<a href="https://www.cnblogs.com/senlinyang/MyComments.html" title="我的发表过的评论列表">我的评论</a>
</li>
		<li>

<a href="https://www.cnblogs.com/senlinyang/OtherPosts.html" title="我评论过的随笔列表">我的参与</a>
</li>
		<li>

<a href="https://www.cnblogs.com/senlinyang/RecentComments.html" title="我的博客的评论列表">最新评论</a>
</li>
		<li>

<a href="https://www.cnblogs.com/senlinyang/tag/" title="我的博客的标签列表">我的标签</a>
</li>

</ul>
<div id="itemListLin_con" style="display:none;">
<ul>

</ul>
</div>
</div>


</div>

<!-- 最新随笔 -->



<!-- 我的标签 -->
<div id="sidebar_toptags" class="sidebar-block">
    
</div>

<!-- 积分与排名 -->
<div id="sidebar_scorerank" class="sidebar-block">
    <div class="catListBlogRank">
<h3 class="catListTitle">积分与排名</h3>
<ul>
	<li class="liScore">
		积分 -	
267402
	</li>
	<li class="liRank">
		排名 -	
1595
	</li>
</ul>
</div>




</div>

<!-- 随笔分类、随笔档案、文章分类、新闻分类、相册、链接 -->
<div id="sidebar_categories">
    
        <div id="sidebar_postcategory" class="catListPostCategory sidebar-block">
            <h3 class="catListTitle">
                

随笔分类



            </h3>


            <ul>

                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1115324.html" rel="" target="">
    algorithm(5)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1127357.html" rel="" target="">
    bigdata(17)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1142702.html" rel="" target="">
    docker(11)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1195603.html" rel="" target="">
    golang(12)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1133427.html" rel="" target="">
    java(17)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1117027.html" rel="" target="">
    Java并发编程(11)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1260629.html" rel="" target="">
    nginx(7)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1127356.html" rel="" target="">
    nosql(15)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1123866.html" rel="" target="">
    ORM(1)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1153139.html" rel="" target="">
    python(23)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1111044.html" rel="" target="">
    redis(13)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1109066.html" rel="" target="">
    Scala从入门到精通(1)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1129419.html" rel="" target="">
    spring(32)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1111383.html" rel="" target="">
    storm(12)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1114656.html" rel="" target="">
    zookeeper(7)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1116787.html" rel="" target="">
    持续集成(2)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1152158.html" rel="" target="">
    人工智能(1)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1161869.html" rel="" target="">
    日常(17)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1175960.html" rel="" target="">
    数据库(3)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1182508.html" rel="" target="">
    微服务(7)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/category/1126749.html" rel="" target="">
    系统设计(3)
</a>
 

                        </li>

            </ul>


        </div>
        <div id="sidebar_postarchive" class="catListPostArchive sidebar-block">
            <h3 class="catListTitle">
                

随笔档案



            </h3>


            <ul>

                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2019/06.html" rel="" target="">
    2019年6月(1)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2019/05.html" rel="" target="">
    2019年5月(2)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2019/04.html" rel="" target="">
    2019年4月(3)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2019/02.html" rel="" target="">
    2019年2月(5)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2019/01.html" rel="" target="">
    2019年1月(5)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2018/12.html" rel="" target="">
    2018年12月(2)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2018/11.html" rel="" target="">
    2018年11月(1)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2018/10.html" rel="" target="">
    2018年10月(2)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2018/09.html" rel="" target="">
    2018年9月(1)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2018/08.html" rel="" target="">
    2018年8月(4)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2018/07.html" rel="" target="">
    2018年7月(8)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2018/06.html" rel="" target="">
    2018年6月(2)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2018/05.html" rel="" target="">
    2018年5月(1)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2018/04.html" rel="" target="">
    2018年4月(19)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2018/03.html" rel="" target="">
    2018年3月(42)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2018/02.html" rel="" target="">
    2018年2月(23)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2018/01.html" rel="" target="">
    2018年1月(48)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2017/12.html" rel="" target="">
    2017年12月(27)
</a>
 

                        </li>
                        <li>
                            
<a href="https://www.cnblogs.com/senlinyang/archive/2017/11.html" rel="" target="">
    2017年11月(24)
</a>
 

                        </li>

            </ul>


        </div>

</div>

<!-- 最新评论 -->




<!-- 阅读排行榜 -->
<div id="sidebar_topviewedposts" class="sidebar-block">
    <div class="catListView">
<h3 class="catListTitle">阅读排行榜</h3>
	<div id="TopViewPostsBlock">
        <ul style="word-break:break-all">
                    <li>
                        <a href="https://www.cnblogs.com/senlinyang/p/7833249.html">
                            1. ssh登录时在参数中加入密码的解决方案(49936)
                        </a>
                    </li>
                    <li>
                        <a href="https://www.cnblogs.com/senlinyang/p/8527764.html">
                            2. git tag的用法(43260)
                        </a>
                    </li>
                    <li>
                        <a href="https://www.cnblogs.com/senlinyang/p/8651884.html">
                            3. 正则表达式匹配不包含某些字符串(36612)
                        </a>
                    </li>
                    <li>
                        <a href="https://www.cnblogs.com/senlinyang/p/7885685.html">
                            4. BitMap算法详解(35982)
                        </a>
                    </li>
                    <li>
                        <a href="https://www.cnblogs.com/senlinyang/p/7885964.html">
                            5. Fork/Join框架详解(33873)
                        </a>
                    </li>
        </ul>
    </div>
</div>


</div>

<!-- 评论排行榜 -->


<!-- 推荐排行榜 -->
</div>
                    <script>loadBlogSideColumn();</script>
			</div>
			
		</div><!--end: sideBarMain -->
	</div><!--end: sideBar 侧边栏容器 -->
	<div class="clear"></div>
	</div><!--end: main -->
	<div class="clear"></div>
	<div id="footer">
		<!--done-->
Copyright © 2020 木易森林
<br><span id="poweredby">Powered by .NET Core on Kubernetes</span>



	</div><!--end: footer -->
</div><!--end: home 自定义的最大容器 -->


    

</body></html>